<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-
(c) The University of Glasgow 2006
(c) The GRASP/AQUA Project, Glasgow University, 1998
-}</span><span>
</span><span id="line-5"></span><span>
</span><span id="line-6"></span><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-7"></span><span class="hs-pragma">{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span><span>
</span><span id="line-8"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Types.Name.Set</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-9"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Names set type</span></span><span>
</span><span id="line-10"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier">NameSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-11"></span><span>
</span><span id="line-12"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** Manipulating these sets</span></span><span>
</span><span id="line-13"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#emptyNameSet"><span class="hs-identifier">emptyNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#unitNameSet"><span class="hs-identifier">unitNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#mkNameSet"><span class="hs-identifier">mkNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#unionNameSet"><span class="hs-identifier">unionNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#unionNameSets"><span class="hs-identifier">unionNameSets</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-14"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#minusNameSet"><span class="hs-identifier">minusNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#elemNameSet"><span class="hs-identifier">elemNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#extendNameSet"><span class="hs-identifier">extendNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#extendNameSetList"><span class="hs-identifier">extendNameSetList</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-15"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#delFromNameSet"><span class="hs-identifier">delFromNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#delListFromNameSet"><span class="hs-identifier">delListFromNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#isEmptyNameSet"><span class="hs-identifier">isEmptyNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#filterNameSet"><span class="hs-identifier">filterNameSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-16"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#intersectsNameSet"><span class="hs-identifier">intersectsNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#disjointNameSet"><span class="hs-identifier">disjointNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#intersectNameSet"><span class="hs-identifier">intersectNameSet</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-17"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#nameSetAny"><span class="hs-identifier">nameSetAny</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#nameSetAll"><span class="hs-identifier">nameSetAll</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#nameSetElemsStable"><span class="hs-identifier">nameSetElemsStable</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-18"></span><span>
</span><span id="line-19"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Free variables</span></span><span>
</span><span id="line-20"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier">FreeVars</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-21"></span><span>
</span><span id="line-22"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** Manipulating sets of free variables</span></span><span>
</span><span id="line-23"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#isEmptyFVs"><span class="hs-identifier">isEmptyFVs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#emptyFVs"><span class="hs-identifier">emptyFVs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#plusFVs"><span class="hs-identifier">plusFVs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#plusFV"><span class="hs-identifier">plusFV</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-24"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#mkFVs"><span class="hs-identifier">mkFVs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#addOneFV"><span class="hs-identifier">addOneFV</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#unitFV"><span class="hs-identifier">unitFV</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#delFV"><span class="hs-identifier">delFV</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#delFVs"><span class="hs-identifier">delFVs</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-25"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#intersectFVs"><span class="hs-identifier">intersectFVs</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-26"></span><span>
</span><span id="line-27"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Defs and uses</span></span><span>
</span><span id="line-28"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#Defs"><span class="hs-identifier">Defs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#Uses"><span class="hs-identifier">Uses</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUse"><span class="hs-identifier">DefUse</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier">DefUses</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-29"></span><span>
</span><span id="line-30"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** Manipulating defs and uses</span></span><span>
</span><span id="line-31"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#emptyDUs"><span class="hs-identifier">emptyDUs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#usesOnly"><span class="hs-identifier">usesOnly</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#mkDUs"><span class="hs-identifier">mkDUs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#plusDU"><span class="hs-identifier">plusDU</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-32"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#findUses"><span class="hs-identifier">findUses</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#duDefs"><span class="hs-identifier">duDefs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#duUses"><span class="hs-identifier">duUses</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#allUses"><span class="hs-identifier">allUses</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-33"></span><span>
</span><span id="line-34"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Non-CAFfy names</span></span><span>
</span><span id="line-35"></span><span>        </span><span class="annot"><a href="GHC.Types.Name.Set.html#NonCaffySet"><span class="hs-identifier">NonCaffySet</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-36"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-40"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-41"></span><span>
</span><span id="line-42"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.html"><span class="hs-identifier">GHC.Types.Name</span></a></span><span>
</span><span id="line-43"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.OrdList.html"><span class="hs-identifier">GHC.Data.OrdList</span></a></span><span>
</span><span id="line-44"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Set.html"><span class="hs-identifier">GHC.Types.Unique.Set</span></a></span><span>
</span><span id="line-45"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.List.html#"><span class="hs-identifier">Data.List</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.OldList.html#sortBy"><span class="hs-identifier">sortBy</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-46"></span><span>
</span><span id="line-47"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection[Sets of names}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-54"></span><span>
</span><span id="line-55"></span><span class="hs-keyword">type</span><span> </span><span id="NameSet"><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-var">NameSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Set.html#UniqSet"><span class="hs-identifier hs-type">UniqSet</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-56"></span><span>
</span><span id="line-57"></span><span class="annot"><a href="GHC.Types.Name.Set.html#emptyNameSet"><span class="hs-identifier hs-type">emptyNameSet</span></a></span><span>       </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-58"></span><span class="annot"><a href="GHC.Types.Name.Set.html#unitNameSet"><span class="hs-identifier hs-type">unitNameSet</span></a></span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-59"></span><span class="annot"><a href="GHC.Types.Name.Set.html#extendNameSetList"><span class="hs-identifier hs-type">extendNameSetList</span></a></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-60"></span><span class="annot"><a href="GHC.Types.Name.Set.html#extendNameSet"><span class="hs-identifier hs-type">extendNameSet</span></a></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-61"></span><span class="annot"><a href="GHC.Types.Name.Set.html#mkNameSet"><span class="hs-identifier hs-type">mkNameSet</span></a></span><span>          </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-62"></span><span class="annot"><a href="GHC.Types.Name.Set.html#unionNameSet"><span class="hs-identifier hs-type">unionNameSet</span></a></span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-63"></span><span class="annot"><a href="GHC.Types.Name.Set.html#unionNameSets"><span class="hs-identifier hs-type">unionNameSets</span></a></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-64"></span><span class="annot"><a href="GHC.Types.Name.Set.html#minusNameSet"><span class="hs-identifier hs-type">minusNameSet</span></a></span><span>       </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-65"></span><span class="annot"><a href="GHC.Types.Name.Set.html#elemNameSet"><span class="hs-identifier hs-type">elemNameSet</span></a></span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-66"></span><span class="annot"><a href="GHC.Types.Name.Set.html#isEmptyNameSet"><span class="hs-identifier hs-type">isEmptyNameSet</span></a></span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-67"></span><span class="annot"><a href="GHC.Types.Name.Set.html#delFromNameSet"><span class="hs-identifier hs-type">delFromNameSet</span></a></span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-68"></span><span class="annot"><a href="GHC.Types.Name.Set.html#delListFromNameSet"><span class="hs-identifier hs-type">delListFromNameSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-69"></span><span class="annot"><a href="GHC.Types.Name.Set.html#filterNameSet"><span class="hs-identifier hs-type">filterNameSet</span></a></span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-70"></span><span class="annot"><a href="GHC.Types.Name.Set.html#intersectNameSet"><span class="hs-identifier hs-type">intersectNameSet</span></a></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-71"></span><span class="annot"><a href="GHC.Types.Name.Set.html#intersectsNameSet"><span class="hs-identifier hs-type">intersectsNameSet</span></a></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-72"></span><span class="annot"><a href="GHC.Types.Name.Set.html#disjointNameSet"><span class="hs-identifier hs-type">disjointNameSet</span></a></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-73"></span><span class="hs-comment">-- ^ True if there is a non-empty intersection.</span><span>
</span><span id="line-74"></span><span class="hs-comment">-- @s1 `intersectsNameSet` s2@ doesn't compute @s2@ if @s1@ is empty</span><span>
</span><span id="line-75"></span><span>
</span><span id="line-76"></span><span id="isEmptyNameSet"><span class="annot"><span class="annottext">isEmptyNameSet :: NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#isEmptyNameSet"><span class="hs-identifier hs-var hs-var">isEmptyNameSet</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; Bool
forall a. UniqSet a -&gt; Bool
</span><a href="GHC.Types.Unique.Set.html#isEmptyUniqSet"><span class="hs-identifier hs-var">isEmptyUniqSet</span></a></span><span>
</span><span id="line-77"></span><span id="emptyNameSet"><span class="annot"><span class="annottext">emptyNameSet :: NameSet
</span><a href="GHC.Types.Name.Set.html#emptyNameSet"><span class="hs-identifier hs-var hs-var">emptyNameSet</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet
forall a. UniqSet a
</span><a href="GHC.Types.Unique.Set.html#emptyUniqSet"><span class="hs-identifier hs-var">emptyUniqSet</span></a></span><span>
</span><span id="line-78"></span><span id="unitNameSet"><span class="annot"><span class="annottext">unitNameSet :: Name -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unitNameSet"><span class="hs-identifier hs-var hs-var">unitNameSet</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; NameSet
forall a. Uniquable a =&gt; a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#unitUniqSet"><span class="hs-identifier hs-var">unitUniqSet</span></a></span><span>
</span><span id="line-79"></span><span id="mkNameSet"><span class="annot"><span class="annottext">mkNameSet :: [Name] -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#mkNameSet"><span class="hs-identifier hs-var hs-var">mkNameSet</span></a></span></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Name] -&gt; NameSet
forall a. Uniquable a =&gt; [a] -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#mkUniqSet"><span class="hs-identifier hs-var">mkUniqSet</span></a></span><span>
</span><span id="line-80"></span><span id="extendNameSetList"><span class="annot"><span class="annottext">extendNameSetList :: NameSet -&gt; [Name] -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#extendNameSetList"><span class="hs-identifier hs-var hs-var">extendNameSetList</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; [Name] -&gt; NameSet
forall a. Uniquable a =&gt; UniqSet a -&gt; [a] -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#addListToUniqSet"><span class="hs-identifier hs-var">addListToUniqSet</span></a></span><span>
</span><span id="line-81"></span><span id="extendNameSet"><span class="annot"><span class="annottext">extendNameSet :: NameSet -&gt; Name -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#extendNameSet"><span class="hs-identifier hs-var hs-var">extendNameSet</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; Name -&gt; NameSet
forall a. Uniquable a =&gt; UniqSet a -&gt; a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#addOneToUniqSet"><span class="hs-identifier hs-var">addOneToUniqSet</span></a></span><span>
</span><span id="line-82"></span><span id="unionNameSet"><span class="annot"><span class="annottext">unionNameSet :: NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unionNameSet"><span class="hs-identifier hs-var hs-var">unionNameSet</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
forall a. UniqSet a -&gt; UniqSet a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#unionUniqSets"><span class="hs-identifier hs-var">unionUniqSets</span></a></span><span>
</span><span id="line-83"></span><span id="unionNameSets"><span class="annot"><span class="annottext">unionNameSets :: [NameSet] -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unionNameSets"><span class="hs-identifier hs-var hs-var">unionNameSets</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[NameSet] -&gt; NameSet
forall a. [UniqSet a] -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#unionManyUniqSets"><span class="hs-identifier hs-var">unionManyUniqSets</span></a></span><span>
</span><span id="line-84"></span><span id="minusNameSet"><span class="annot"><span class="annottext">minusNameSet :: NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#minusNameSet"><span class="hs-identifier hs-var hs-var">minusNameSet</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
forall a. UniqSet a -&gt; UniqSet a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#minusUniqSet"><span class="hs-identifier hs-var">minusUniqSet</span></a></span><span>
</span><span id="line-85"></span><span id="elemNameSet"><span class="annot"><span class="annottext">elemNameSet :: Name -&gt; NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#elemNameSet"><span class="hs-identifier hs-var hs-var">elemNameSet</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; NameSet -&gt; Bool
forall a. Uniquable a =&gt; a -&gt; UniqSet a -&gt; Bool
</span><a href="GHC.Types.Unique.Set.html#elementOfUniqSet"><span class="hs-identifier hs-var">elementOfUniqSet</span></a></span><span>
</span><span id="line-86"></span><span id="delFromNameSet"><span class="annot"><span class="annottext">delFromNameSet :: NameSet -&gt; Name -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#delFromNameSet"><span class="hs-identifier hs-var hs-var">delFromNameSet</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; Name -&gt; NameSet
forall a. Uniquable a =&gt; UniqSet a -&gt; a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#delOneFromUniqSet"><span class="hs-identifier hs-var">delOneFromUniqSet</span></a></span><span>
</span><span id="line-87"></span><span id="filterNameSet"><span class="annot"><span class="annottext">filterNameSet :: (Name -&gt; Bool) -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#filterNameSet"><span class="hs-identifier hs-var hs-var">filterNameSet</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Bool) -&gt; NameSet -&gt; NameSet
forall a. (a -&gt; Bool) -&gt; UniqSet a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#filterUniqSet"><span class="hs-identifier hs-var">filterUniqSet</span></a></span><span>
</span><span id="line-88"></span><span id="intersectNameSet"><span class="annot"><span class="annottext">intersectNameSet :: NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#intersectNameSet"><span class="hs-identifier hs-var hs-var">intersectNameSet</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
forall a. UniqSet a -&gt; UniqSet a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#intersectUniqSets"><span class="hs-identifier hs-var">intersectUniqSets</span></a></span><span>
</span><span id="line-89"></span><span id="disjointNameSet"><span class="annot"><span class="annottext">disjointNameSet :: NameSet -&gt; NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#disjointNameSet"><span class="hs-identifier hs-var hs-var">disjointNameSet</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; Bool
forall a. UniqSet a -&gt; UniqSet a -&gt; Bool
</span><a href="GHC.Types.Unique.Set.html#disjointUniqSets"><span class="hs-identifier hs-var">disjointUniqSets</span></a></span><span>
</span><span id="line-90"></span><span>
</span><span id="line-91"></span><span id="delListFromNameSet"><span class="annot"><span class="annottext">delListFromNameSet :: NameSet -&gt; [Name] -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#delListFromNameSet"><span class="hs-identifier hs-var hs-var">delListFromNameSet</span></a></span></span><span> </span><span id="local-6989586621680830371"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830371"><span class="hs-identifier hs-var">set</span></a></span></span><span> </span><span id="local-6989586621680830370"><span class="annot"><span class="annottext">[Name]
</span><a href="#local-6989586621680830370"><span class="hs-identifier hs-var">ns</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(NameSet -&gt; Name -&gt; NameSet) -&gt; NameSet -&gt; [Name] -&gt; NameSet
forall (t :: * -&gt; *) b a.
Foldable t =&gt;
(b -&gt; a -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldl%27"><span class="hs-identifier hs-var">foldl'</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; Name -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#delFromNameSet"><span class="hs-identifier hs-var">delFromNameSet</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830371"><span class="hs-identifier hs-var">set</span></a></span><span> </span><span class="annot"><span class="annottext">[Name]
</span><a href="#local-6989586621680830370"><span class="hs-identifier hs-var">ns</span></a></span><span>
</span><span id="line-92"></span><span>
</span><span id="line-93"></span><span id="intersectsNameSet"><span class="annot"><span class="annottext">intersectsNameSet :: NameSet -&gt; NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#intersectsNameSet"><span class="hs-identifier hs-var hs-var">intersectsNameSet</span></a></span></span><span> </span><span id="local-6989586621680830368"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830368"><span class="hs-identifier hs-var">s1</span></a></span></span><span> </span><span id="local-6989586621680830367"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830367"><span class="hs-identifier hs-var">s2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830368"><span class="hs-identifier hs-var">s1</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#disjointNameSet"><span class="hs-operator hs-var">`disjointNameSet`</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830367"><span class="hs-identifier hs-var">s2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-94"></span><span>
</span><span id="line-95"></span><span class="annot"><a href="GHC.Types.Name.Set.html#nameSetAny"><span class="hs-identifier hs-type">nameSetAny</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-96"></span><span id="nameSetAny"><span class="annot"><span class="annottext">nameSetAny :: (Name -&gt; Bool) -&gt; NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#nameSetAny"><span class="hs-identifier hs-var hs-var">nameSetAny</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Bool) -&gt; NameSet -&gt; Bool
forall a. (a -&gt; Bool) -&gt; UniqSet a -&gt; Bool
</span><a href="GHC.Types.Unique.Set.html#uniqSetAny"><span class="hs-identifier hs-var">uniqSetAny</span></a></span><span>
</span><span id="line-97"></span><span>
</span><span id="line-98"></span><span class="annot"><a href="GHC.Types.Name.Set.html#nameSetAll"><span class="hs-identifier hs-type">nameSetAll</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-99"></span><span id="nameSetAll"><span class="annot"><span class="annottext">nameSetAll :: (Name -&gt; Bool) -&gt; NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#nameSetAll"><span class="hs-identifier hs-var hs-var">nameSetAll</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Bool) -&gt; NameSet -&gt; Bool
forall a. (a -&gt; Bool) -&gt; UniqSet a -&gt; Bool
</span><a href="GHC.Types.Unique.Set.html#uniqSetAll"><span class="hs-identifier hs-var">uniqSetAll</span></a></span><span>
</span><span id="line-100"></span><span>
</span><span id="line-101"></span><span class="hs-comment">-- | Get the elements of a NameSet with some stable ordering.</span><span>
</span><span id="line-102"></span><span class="hs-comment">-- This only works for Names that originate in the source code or have been</span><span>
</span><span id="line-103"></span><span class="hs-comment">-- tidied.</span><span>
</span><span id="line-104"></span><span class="hs-comment">-- See Note [Deterministic UniqFM] to learn about nondeterminism</span><span>
</span><span id="line-105"></span><span class="annot"><a href="GHC.Types.Name.Set.html#nameSetElemsStable"><span class="hs-identifier hs-type">nameSetElemsStable</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-106"></span><span id="nameSetElemsStable"><span class="annot"><span class="annottext">nameSetElemsStable :: NameSet -&gt; [Name]
</span><a href="GHC.Types.Name.Set.html#nameSetElemsStable"><span class="hs-identifier hs-var hs-var">nameSetElemsStable</span></a></span></span><span> </span><span id="local-6989586621680830363"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830363"><span class="hs-identifier hs-var">ns</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-107"></span><span>  </span><span class="annot"><span class="annottext">(Name -&gt; Name -&gt; Ordering) -&gt; [Name] -&gt; [Name]
forall a. (a -&gt; a -&gt; Ordering) -&gt; [a] -&gt; [a]
</span><a href="../../base/src/Data.OldList.html#sortBy"><span class="hs-identifier hs-var">sortBy</span></a></span><span> </span><span class="annot"><span class="annottext">Name -&gt; Name -&gt; Ordering
</span><a href="GHC.Types.Name.html#stableNameCmp"><span class="hs-identifier hs-var">stableNameCmp</span></a></span><span> </span><span class="annot"><span class="annottext">([Name] -&gt; [Name]) -&gt; [Name] -&gt; [Name]
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; [Name]
forall elt. UniqSet elt -&gt; [elt]
</span><a href="GHC.Types.Unique.Set.html#nonDetEltsUniqSet"><span class="hs-identifier hs-var">nonDetEltsUniqSet</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830363"><span class="hs-identifier hs-var">ns</span></a></span><span>
</span><span id="line-108"></span><span>  </span><span class="hs-comment">-- It's OK to use nonDetEltsUniqSet here because we immediately sort</span><span>
</span><span id="line-109"></span><span>  </span><span class="hs-comment">-- with stableNameCmp</span><span>
</span><span id="line-110"></span><span>
</span><span id="line-111"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{Free variables}
*                                                                      *
************************************************************************

These synonyms are useful when we are thinking of free variables
-}</span><span>
</span><span id="line-120"></span><span>
</span><span id="line-121"></span><span class="hs-keyword">type</span><span> </span><span id="FreeVars"><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-var">FreeVars</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-122"></span><span>
</span><span id="line-123"></span><span class="annot"><a href="GHC.Types.Name.Set.html#plusFV"><span class="hs-identifier hs-type">plusFV</span></a></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span>
</span><span id="line-124"></span><span class="annot"><a href="GHC.Types.Name.Set.html#addOneFV"><span class="hs-identifier hs-type">addOneFV</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span>
</span><span id="line-125"></span><span class="annot"><a href="GHC.Types.Name.Set.html#unitFV"><span class="hs-identifier hs-type">unitFV</span></a></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span>
</span><span id="line-126"></span><span class="annot"><a href="GHC.Types.Name.Set.html#emptyFVs"><span class="hs-identifier hs-type">emptyFVs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span>
</span><span id="line-127"></span><span class="annot"><a href="GHC.Types.Name.Set.html#plusFVs"><span class="hs-identifier hs-type">plusFVs</span></a></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span>
</span><span id="line-128"></span><span class="annot"><a href="GHC.Types.Name.Set.html#mkFVs"><span class="hs-identifier hs-type">mkFVs</span></a></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span>
</span><span id="line-129"></span><span class="annot"><a href="GHC.Types.Name.Set.html#delFV"><span class="hs-identifier hs-type">delFV</span></a></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span>
</span><span id="line-130"></span><span class="annot"><a href="GHC.Types.Name.Set.html#delFVs"><span class="hs-identifier hs-type">delFVs</span></a></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span>
</span><span id="line-131"></span><span class="annot"><a href="GHC.Types.Name.Set.html#intersectFVs"><span class="hs-identifier hs-type">intersectFVs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#FreeVars"><span class="hs-identifier hs-type">FreeVars</span></a></span><span>
</span><span id="line-132"></span><span>
</span><span id="line-133"></span><span class="annot"><a href="GHC.Types.Name.Set.html#isEmptyFVs"><span class="hs-identifier hs-type">isEmptyFVs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-134"></span><span id="isEmptyFVs"><span class="annot"><span class="annottext">isEmptyFVs :: NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#isEmptyFVs"><span class="hs-identifier hs-var hs-var">isEmptyFVs</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#isEmptyNameSet"><span class="hs-identifier hs-var">isEmptyNameSet</span></a></span><span>
</span><span id="line-135"></span><span id="emptyFVs"><span class="annot"><span class="annottext">emptyFVs :: NameSet
</span><a href="GHC.Types.Name.Set.html#emptyFVs"><span class="hs-identifier hs-var hs-var">emptyFVs</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="GHC.Types.Name.Set.html#emptyNameSet"><span class="hs-identifier hs-var">emptyNameSet</span></a></span><span>
</span><span id="line-136"></span><span id="plusFVs"><span class="annot"><span class="annottext">plusFVs :: [NameSet] -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#plusFVs"><span class="hs-identifier hs-var hs-var">plusFVs</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[NameSet] -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unionNameSets"><span class="hs-identifier hs-var">unionNameSets</span></a></span><span>
</span><span id="line-137"></span><span id="plusFV"><span class="annot"><span class="annottext">plusFV :: NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#plusFV"><span class="hs-identifier hs-var hs-var">plusFV</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unionNameSet"><span class="hs-identifier hs-var">unionNameSet</span></a></span><span>
</span><span id="line-138"></span><span id="mkFVs"><span class="annot"><span class="annottext">mkFVs :: [Name] -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#mkFVs"><span class="hs-identifier hs-var hs-var">mkFVs</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Name] -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#mkNameSet"><span class="hs-identifier hs-var">mkNameSet</span></a></span><span>
</span><span id="line-139"></span><span id="addOneFV"><span class="annot"><span class="annottext">addOneFV :: NameSet -&gt; Name -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#addOneFV"><span class="hs-identifier hs-var hs-var">addOneFV</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; Name -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#extendNameSet"><span class="hs-identifier hs-var">extendNameSet</span></a></span><span>
</span><span id="line-140"></span><span id="unitFV"><span class="annot"><span class="annottext">unitFV :: Name -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unitFV"><span class="hs-identifier hs-var hs-var">unitFV</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unitNameSet"><span class="hs-identifier hs-var">unitNameSet</span></a></span><span>
</span><span id="line-141"></span><span id="delFV"><span class="annot"><span class="annottext">delFV :: Name -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#delFV"><span class="hs-identifier hs-var hs-var">delFV</span></a></span></span><span> </span><span id="local-6989586621680830360"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680830360"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621680830359"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830359"><span class="hs-identifier hs-var">s</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; Name -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#delFromNameSet"><span class="hs-identifier hs-var">delFromNameSet</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830359"><span class="hs-identifier hs-var">s</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680830360"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-142"></span><span id="delFVs"><span class="annot"><span class="annottext">delFVs :: [Name] -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#delFVs"><span class="hs-identifier hs-var hs-var">delFVs</span></a></span></span><span> </span><span id="local-6989586621680830358"><span class="annot"><span class="annottext">[Name]
</span><a href="#local-6989586621680830358"><span class="hs-identifier hs-var">ns</span></a></span></span><span> </span><span id="local-6989586621680830357"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830357"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; [Name] -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#delListFromNameSet"><span class="hs-identifier hs-var">delListFromNameSet</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830357"><span class="hs-identifier hs-var">s</span></a></span><span> </span><span class="annot"><span class="annottext">[Name]
</span><a href="#local-6989586621680830358"><span class="hs-identifier hs-var">ns</span></a></span><span>
</span><span id="line-143"></span><span id="intersectFVs"><span class="annot"><span class="annottext">intersectFVs :: NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#intersectFVs"><span class="hs-identifier hs-var hs-var">intersectFVs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#intersectNameSet"><span class="hs-identifier hs-var">intersectNameSet</span></a></span><span>
</span><span id="line-144"></span><span>
</span><span id="line-145"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
                Defs and uses
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-152"></span><span>
</span><span id="line-153"></span><span class="hs-comment">-- | A set of names that are defined somewhere</span><span>
</span><span id="line-154"></span><span class="hs-keyword">type</span><span> </span><span id="Defs"><span class="annot"><a href="GHC.Types.Name.Set.html#Defs"><span class="hs-identifier hs-var">Defs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-155"></span><span>
</span><span id="line-156"></span><span class="hs-comment">-- | A set of names that are used somewhere</span><span>
</span><span id="line-157"></span><span class="hs-keyword">type</span><span> </span><span id="Uses"><span class="annot"><a href="GHC.Types.Name.Set.html#Uses"><span class="hs-identifier hs-var">Uses</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-158"></span><span>
</span><span id="line-159"></span><span class="hs-comment">-- | @(Just ds, us) =&gt;@ The use of any member of the @ds@</span><span>
</span><span id="line-160"></span><span class="hs-comment">--                      implies that all the @us@ are used too.</span><span>
</span><span id="line-161"></span><span class="hs-comment">--                      Also, @us@ may mention @ds@.</span><span>
</span><span id="line-162"></span><span class="hs-comment">--</span><span>
</span><span id="line-163"></span><span class="hs-comment">-- @Nothing =&gt;@ Nothing is defined in this group, but</span><span>
</span><span id="line-164"></span><span class="hs-comment">--              nevertheless all the uses are essential.</span><span>
</span><span id="line-165"></span><span class="hs-comment">--              Used for instance declarations, for example</span><span>
</span><span id="line-166"></span><span class="hs-keyword">type</span><span> </span><span id="DefUse"><span class="annot"><a href="GHC.Types.Name.Set.html#DefUse"><span class="hs-identifier hs-var">DefUse</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#Defs"><span class="hs-identifier hs-type">Defs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#Uses"><span class="hs-identifier hs-type">Uses</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-167"></span><span>
</span><span id="line-168"></span><span class="hs-comment">-- | A number of 'DefUse's in dependency order: earlier 'Defs' scope over later 'Uses'</span><span>
</span><span id="line-169"></span><span class="hs-comment">--   In a single (def, use) pair, the defs also scope over the uses</span><span>
</span><span id="line-170"></span><span class="hs-keyword">type</span><span> </span><span id="DefUses"><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier hs-var">DefUses</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Data.OrdList.html#OrdList"><span class="hs-identifier hs-type">OrdList</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUse"><span class="hs-identifier hs-type">DefUse</span></a></span><span>
</span><span id="line-171"></span><span>
</span><span id="line-172"></span><span class="annot"><a href="GHC.Types.Name.Set.html#emptyDUs"><span class="hs-identifier hs-type">emptyDUs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier hs-type">DefUses</span></a></span><span>
</span><span id="line-173"></span><span id="emptyDUs"><span class="annot"><span class="annottext">emptyDUs :: DefUses
</span><a href="GHC.Types.Name.Set.html#emptyDUs"><span class="hs-identifier hs-var hs-var">emptyDUs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DefUses
forall a. OrdList a
</span><a href="GHC.Data.OrdList.html#nilOL"><span class="hs-identifier hs-var">nilOL</span></a></span><span>
</span><span id="line-174"></span><span>
</span><span id="line-175"></span><span class="annot"><a href="GHC.Types.Name.Set.html#usesOnly"><span class="hs-identifier hs-type">usesOnly</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#Uses"><span class="hs-identifier hs-type">Uses</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier hs-type">DefUses</span></a></span><span>
</span><span id="line-176"></span><span id="usesOnly"><span class="annot"><span class="annottext">usesOnly :: NameSet -&gt; DefUses
</span><a href="GHC.Types.Name.Set.html#usesOnly"><span class="hs-identifier hs-var hs-var">usesOnly</span></a></span></span><span> </span><span id="local-6989586621680830355"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830355"><span class="hs-identifier hs-var">uses</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Maybe NameSet, NameSet) -&gt; DefUses
forall a. a -&gt; OrdList a
</span><a href="GHC.Data.OrdList.html#unitOL"><span class="hs-identifier hs-var">unitOL</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe NameSet
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830355"><span class="hs-identifier hs-var">uses</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-177"></span><span>
</span><span id="line-178"></span><span class="annot"><a href="GHC.Types.Name.Set.html#mkDUs"><span class="hs-identifier hs-type">mkDUs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Name.Set.html#Defs"><span class="hs-identifier hs-type">Defs</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.Types.Name.Set.html#Uses"><span class="hs-identifier hs-type">Uses</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier hs-type">DefUses</span></a></span><span>
</span><span id="line-179"></span><span id="mkDUs"><span class="annot"><span class="annottext">mkDUs :: [(NameSet, NameSet)] -&gt; DefUses
</span><a href="GHC.Types.Name.Set.html#mkDUs"><span class="hs-identifier hs-var hs-var">mkDUs</span></a></span></span><span> </span><span id="local-6989586621680830353"><span class="annot"><span class="annottext">[(NameSet, NameSet)]
</span><a href="#local-6989586621680830353"><span class="hs-identifier hs-var">pairs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[(Maybe NameSet, NameSet)] -&gt; DefUses
forall a. [a] -&gt; OrdList a
</span><a href="GHC.Data.OrdList.html#toOL"><span class="hs-identifier hs-var">toOL</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><span class="annottext">NameSet -&gt; Maybe NameSet
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830351"><span class="hs-identifier hs-var">defs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830350"><span class="hs-identifier hs-var">uses</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680830351"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830351"><span class="hs-identifier hs-var">defs</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680830350"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830350"><span class="hs-identifier hs-var">uses</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[(NameSet, NameSet)]
</span><a href="#local-6989586621680830353"><span class="hs-identifier hs-var">pairs</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-180"></span><span>
</span><span id="line-181"></span><span class="annot"><a href="GHC.Types.Name.Set.html#plusDU"><span class="hs-identifier hs-type">plusDU</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier hs-type">DefUses</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier hs-type">DefUses</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier hs-type">DefUses</span></a></span><span>
</span><span id="line-182"></span><span id="plusDU"><span class="annot"><span class="annottext">plusDU :: DefUses -&gt; DefUses -&gt; DefUses
</span><a href="GHC.Types.Name.Set.html#plusDU"><span class="hs-identifier hs-var hs-var">plusDU</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DefUses -&gt; DefUses -&gt; DefUses
forall a. OrdList a -&gt; OrdList a -&gt; OrdList a
</span><a href="GHC.Data.OrdList.html#appOL"><span class="hs-identifier hs-var">appOL</span></a></span><span>
</span><span id="line-183"></span><span>
</span><span id="line-184"></span><span class="annot"><a href="GHC.Types.Name.Set.html#duDefs"><span class="hs-identifier hs-type">duDefs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier hs-type">DefUses</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#Defs"><span class="hs-identifier hs-type">Defs</span></a></span><span>
</span><span id="line-185"></span><span id="duDefs"><span class="annot"><span class="annottext">duDefs :: DefUses -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#duDefs"><span class="hs-identifier hs-var hs-var">duDefs</span></a></span></span><span> </span><span id="local-6989586621680830348"><span class="annot"><span class="annottext">DefUses
</span><a href="#local-6989586621680830348"><span class="hs-identifier hs-var">dus</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((Maybe NameSet, NameSet) -&gt; NameSet -&gt; NameSet)
-&gt; NameSet -&gt; DefUses -&gt; NameSet
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="annot"><span class="annottext">(Maybe NameSet, NameSet) -&gt; NameSet -&gt; NameSet
forall {b}. (Maybe NameSet, b) -&gt; NameSet -&gt; NameSet
</span><a href="#local-6989586621680830346"><span class="hs-identifier hs-var">get</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="GHC.Types.Name.Set.html#emptyNameSet"><span class="hs-identifier hs-var">emptyNameSet</span></a></span><span> </span><span class="annot"><span class="annottext">DefUses
</span><a href="#local-6989586621680830348"><span class="hs-identifier hs-var">dus</span></a></span><span>
</span><span id="line-186"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-187"></span><span>    </span><span id="local-6989586621680830346"><span class="annot"><span class="annottext">get :: (Maybe NameSet, b) -&gt; NameSet -&gt; NameSet
</span><a href="#local-6989586621680830346"><span class="hs-identifier hs-var hs-var">get</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe NameSet
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680830345"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680830345"><span class="hs-identifier hs-var">_u1</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680830344"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830344"><span class="hs-identifier hs-var">d2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830344"><span class="hs-identifier hs-var">d2</span></a></span><span>
</span><span id="line-188"></span><span>    </span><span class="annot"><a href="#local-6989586621680830346"><span class="hs-identifier hs-var">get</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680830343"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830343"><span class="hs-identifier hs-var">d1</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680830342"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680830342"><span class="hs-identifier hs-var">_u1</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680830341"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830341"><span class="hs-identifier hs-var">d2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830343"><span class="hs-identifier hs-var">d1</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unionNameSet"><span class="hs-operator hs-var">`unionNameSet`</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830341"><span class="hs-identifier hs-var">d2</span></a></span><span>
</span><span id="line-189"></span><span>
</span><span id="line-190"></span><span class="annot"><a href="GHC.Types.Name.Set.html#allUses"><span class="hs-identifier hs-type">allUses</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier hs-type">DefUses</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#Uses"><span class="hs-identifier hs-type">Uses</span></a></span><span>
</span><span id="line-191"></span><span class="hs-comment">-- ^ Just like 'duUses', but 'Defs' are not eliminated from the 'Uses' returned</span><span>
</span><span id="line-192"></span><span id="allUses"><span class="annot"><span class="annottext">allUses :: DefUses -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#allUses"><span class="hs-identifier hs-var hs-var">allUses</span></a></span></span><span> </span><span id="local-6989586621680830340"><span class="annot"><span class="annottext">DefUses
</span><a href="#local-6989586621680830340"><span class="hs-identifier hs-var">dus</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((Maybe NameSet, NameSet) -&gt; NameSet -&gt; NameSet)
-&gt; NameSet -&gt; DefUses -&gt; NameSet
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="annot"><span class="annottext">(Maybe NameSet, NameSet) -&gt; NameSet -&gt; NameSet
forall {a}. (a, NameSet) -&gt; NameSet -&gt; NameSet
</span><a href="#local-6989586621680830339"><span class="hs-identifier hs-var">get</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="GHC.Types.Name.Set.html#emptyNameSet"><span class="hs-identifier hs-var">emptyNameSet</span></a></span><span> </span><span class="annot"><span class="annottext">DefUses
</span><a href="#local-6989586621680830340"><span class="hs-identifier hs-var">dus</span></a></span><span>
</span><span id="line-193"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-194"></span><span>    </span><span id="local-6989586621680830339"><span class="annot"><span class="annottext">get :: (a, NameSet) -&gt; NameSet -&gt; NameSet
</span><a href="#local-6989586621680830339"><span class="hs-identifier hs-var hs-var">get</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680830338"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680830338"><span class="hs-identifier hs-var">_d1</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680830337"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830337"><span class="hs-identifier hs-var">u1</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680830336"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830336"><span class="hs-identifier hs-var">u2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830337"><span class="hs-identifier hs-var">u1</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unionNameSet"><span class="hs-operator hs-var">`unionNameSet`</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830336"><span class="hs-identifier hs-var">u2</span></a></span><span>
</span><span id="line-195"></span><span>
</span><span id="line-196"></span><span class="annot"><a href="GHC.Types.Name.Set.html#duUses"><span class="hs-identifier hs-type">duUses</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier hs-type">DefUses</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#Uses"><span class="hs-identifier hs-type">Uses</span></a></span><span>
</span><span id="line-197"></span><span class="hs-comment">-- ^ Collect all 'Uses', regardless of whether the group is itself used,</span><span>
</span><span id="line-198"></span><span class="hs-comment">-- but remove 'Defs' on the way</span><span>
</span><span id="line-199"></span><span id="duUses"><span class="annot"><span class="annottext">duUses :: DefUses -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#duUses"><span class="hs-identifier hs-var hs-var">duUses</span></a></span></span><span> </span><span id="local-6989586621680830335"><span class="annot"><span class="annottext">DefUses
</span><a href="#local-6989586621680830335"><span class="hs-identifier hs-var">dus</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((Maybe NameSet, NameSet) -&gt; NameSet -&gt; NameSet)
-&gt; NameSet -&gt; DefUses -&gt; NameSet
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="annot"><span class="annottext">(Maybe NameSet, NameSet) -&gt; NameSet -&gt; NameSet
</span><a href="#local-6989586621680830334"><span class="hs-identifier hs-var">get</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="GHC.Types.Name.Set.html#emptyNameSet"><span class="hs-identifier hs-var">emptyNameSet</span></a></span><span> </span><span class="annot"><span class="annottext">DefUses
</span><a href="#local-6989586621680830335"><span class="hs-identifier hs-var">dus</span></a></span><span>
</span><span id="line-200"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-201"></span><span>    </span><span id="local-6989586621680830334"><span class="annot"><span class="annottext">get :: (Maybe NameSet, NameSet) -&gt; NameSet -&gt; NameSet
</span><a href="#local-6989586621680830334"><span class="hs-identifier hs-var hs-var">get</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe NameSet
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span>   </span><span id="local-6989586621680830333"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830333"><span class="hs-identifier hs-var">rhs_uses</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680830332"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830332"><span class="hs-identifier hs-var">uses</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830333"><span class="hs-identifier hs-var">rhs_uses</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unionNameSet"><span class="hs-operator hs-var">`unionNameSet`</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830332"><span class="hs-identifier hs-var">uses</span></a></span><span>
</span><span id="line-202"></span><span>    </span><span class="annot"><a href="#local-6989586621680830334"><span class="hs-identifier hs-var">get</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680830331"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830331"><span class="hs-identifier hs-var">defs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680830330"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830330"><span class="hs-identifier hs-var">rhs_uses</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680830329"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830329"><span class="hs-identifier hs-var">uses</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830330"><span class="hs-identifier hs-var">rhs_uses</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unionNameSet"><span class="hs-operator hs-var">`unionNameSet`</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830329"><span class="hs-identifier hs-var">uses</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-203"></span><span>                                     </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#minusNameSet"><span class="hs-operator hs-var">`minusNameSet`</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830331"><span class="hs-identifier hs-var">defs</span></a></span><span>
</span><span id="line-204"></span><span>
</span><span id="line-205"></span><span class="annot"><a href="GHC.Types.Name.Set.html#findUses"><span class="hs-identifier hs-type">findUses</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#DefUses"><span class="hs-identifier hs-type">DefUses</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#Uses"><span class="hs-identifier hs-type">Uses</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#Uses"><span class="hs-identifier hs-type">Uses</span></a></span><span>
</span><span id="line-206"></span><span class="hs-comment">-- ^ Given some 'DefUses' and some 'Uses', find all the uses, transitively.</span><span>
</span><span id="line-207"></span><span class="hs-comment">-- The result is a superset of the input 'Uses'; and includes things defined</span><span>
</span><span id="line-208"></span><span class="hs-comment">-- in the input 'DefUses' (but only if they are used)</span><span>
</span><span id="line-209"></span><span id="findUses"><span class="annot"><span class="annottext">findUses :: DefUses -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#findUses"><span class="hs-identifier hs-var hs-var">findUses</span></a></span></span><span> </span><span id="local-6989586621680830328"><span class="annot"><span class="annottext">DefUses
</span><a href="#local-6989586621680830328"><span class="hs-identifier hs-var">dus</span></a></span></span><span> </span><span id="local-6989586621680830327"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830327"><span class="hs-identifier hs-var">uses</span></a></span></span><span>
</span><span id="line-210"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((Maybe NameSet, NameSet) -&gt; NameSet -&gt; NameSet)
-&gt; NameSet -&gt; DefUses -&gt; NameSet
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="annot"><span class="annottext">(Maybe NameSet, NameSet) -&gt; NameSet -&gt; NameSet
</span><a href="#local-6989586621680830326"><span class="hs-identifier hs-var">get</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830327"><span class="hs-identifier hs-var">uses</span></a></span><span> </span><span class="annot"><span class="annottext">DefUses
</span><a href="#local-6989586621680830328"><span class="hs-identifier hs-var">dus</span></a></span><span>
</span><span id="line-211"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-212"></span><span>    </span><span id="local-6989586621680830326"><span class="annot"><span class="annottext">get :: (Maybe NameSet, NameSet) -&gt; NameSet -&gt; NameSet
</span><a href="#local-6989586621680830326"><span class="hs-identifier hs-var hs-var">get</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe NameSet
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680830325"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830325"><span class="hs-identifier hs-var">rhs_uses</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680830324"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830324"><span class="hs-identifier hs-var">uses</span></a></span></span><span>
</span><span id="line-213"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830325"><span class="hs-identifier hs-var">rhs_uses</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unionNameSet"><span class="hs-operator hs-var">`unionNameSet`</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830324"><span class="hs-identifier hs-var">uses</span></a></span><span>
</span><span id="line-214"></span><span>    </span><span class="annot"><a href="#local-6989586621680830326"><span class="hs-identifier hs-var">get</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680830323"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830323"><span class="hs-identifier hs-var">defs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680830322"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830322"><span class="hs-identifier hs-var">rhs_uses</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680830321"><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830321"><span class="hs-identifier hs-var">uses</span></a></span></span><span>
</span><span id="line-215"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830323"><span class="hs-identifier hs-var">defs</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#intersectsNameSet"><span class="hs-operator hs-var">`intersectsNameSet`</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830321"><span class="hs-identifier hs-var">uses</span></a></span><span>         </span><span class="hs-comment">-- Used</span><span>
</span><span id="line-216"></span><span>        </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">||</span></span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Bool) -&gt; NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#nameSetAny"><span class="hs-identifier hs-var">nameSetAny</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">OccName -&gt; Bool
</span><a href="GHC.Types.Name.Occurrence.html#startsWithUnderscore"><span class="hs-identifier hs-var">startsWithUnderscore</span></a></span><span> </span><span class="annot"><span class="annottext">(OccName -&gt; Bool) -&gt; (Name -&gt; OccName) -&gt; Name -&gt; Bool
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">Name -&gt; OccName
</span><a href="GHC.Types.Name.html#nameOccName"><span class="hs-identifier hs-var">nameOccName</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830323"><span class="hs-identifier hs-var">defs</span></a></span><span>
</span><span id="line-217"></span><span>                </span><span class="hs-comment">-- At least one starts with an &quot;_&quot;,</span><span>
</span><span id="line-218"></span><span>                </span><span class="hs-comment">-- so treat the group as used</span><span>
</span><span id="line-219"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830322"><span class="hs-identifier hs-var">rhs_uses</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet -&gt; NameSet -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#unionNameSet"><span class="hs-operator hs-var">`unionNameSet`</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830321"><span class="hs-identifier hs-var">uses</span></a></span><span>
</span><span id="line-220"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>     </span><span class="hs-comment">-- No def is used</span><span>
</span><span id="line-221"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="#local-6989586621680830321"><span class="hs-identifier hs-var">uses</span></a></span><span>
</span><span id="line-222"></span><span>
</span><span id="line-223"></span><span class="hs-comment">-- | 'Id's which have no CAF references. This is a result of analysis of C--.</span><span>
</span><span id="line-224"></span><span class="hs-comment">-- It is always safe to use an empty 'NonCaffySet'. TODO Refer to Note.</span><span>
</span><span id="line-225"></span><span class="hs-keyword">newtype</span><span> </span><span id="NonCaffySet"><span class="annot"><a href="GHC.Types.Name.Set.html#NonCaffySet"><span class="hs-identifier hs-var">NonCaffySet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="NonCaffySet"><span class="annot"><a href="GHC.Types.Name.Set.html#NonCaffySet"><span class="hs-identifier hs-var">NonCaffySet</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-226"></span><span>  </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680830303"><span id="local-6989586621680830309"><span id="local-6989586621680830314"><span class="annot"><span class="annottext">NonEmpty NonCaffySet -&gt; NonCaffySet
NonCaffySet -&gt; NonCaffySet -&gt; NonCaffySet
(NonCaffySet -&gt; NonCaffySet -&gt; NonCaffySet)
-&gt; (NonEmpty NonCaffySet -&gt; NonCaffySet)
-&gt; (forall b. Integral b =&gt; b -&gt; NonCaffySet -&gt; NonCaffySet)
-&gt; Semigroup NonCaffySet
forall b. Integral b =&gt; b -&gt; NonCaffySet -&gt; NonCaffySet
forall a.
(a -&gt; a -&gt; a)
-&gt; (NonEmpty a -&gt; a)
-&gt; (forall b. Integral b =&gt; b -&gt; a -&gt; a)
-&gt; Semigroup a
stimes :: forall b. Integral b =&gt; b -&gt; NonCaffySet -&gt; NonCaffySet
$cstimes :: forall b. Integral b =&gt; b -&gt; NonCaffySet -&gt; NonCaffySet
sconcat :: NonEmpty NonCaffySet -&gt; NonCaffySet
$csconcat :: NonEmpty NonCaffySet -&gt; NonCaffySet
&lt;&gt; :: NonCaffySet -&gt; NonCaffySet -&gt; NonCaffySet
$c&lt;&gt; :: NonCaffySet -&gt; NonCaffySet -&gt; NonCaffySet
</span><a href="../../base/src/GHC.Base.html#Semigroup"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Semigroup</span></a></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680830284"><span id="local-6989586621680830288"><span id="local-6989586621680830293"><span class="annot"><span class="annottext">Semigroup NonCaffySet
NonCaffySet
Semigroup NonCaffySet
-&gt; NonCaffySet
-&gt; (NonCaffySet -&gt; NonCaffySet -&gt; NonCaffySet)
-&gt; ([NonCaffySet] -&gt; NonCaffySet)
-&gt; Monoid NonCaffySet
[NonCaffySet] -&gt; NonCaffySet
NonCaffySet -&gt; NonCaffySet -&gt; NonCaffySet
forall a.
Semigroup a -&gt; a -&gt; (a -&gt; a -&gt; a) -&gt; ([a] -&gt; a) -&gt; Monoid a
mconcat :: [NonCaffySet] -&gt; NonCaffySet
$cmconcat :: [NonCaffySet] -&gt; NonCaffySet
mappend :: NonCaffySet -&gt; NonCaffySet -&gt; NonCaffySet
$cmappend :: NonCaffySet -&gt; NonCaffySet -&gt; NonCaffySet
mempty :: NonCaffySet
$cmempty :: NonCaffySet
</span><a href="../../base/src/GHC.Base.html#Monoid"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Monoid</span></a></span></span></span></span><span class="hs-special">)</span><span>
</span><span id="line-227"></span></pre></body></html>